Docker (Rancher Desktop) で OpenSearch 2.12.0 を試してみた
はじめに
OpenSearch をローカルで試してみたくて、公式の Get Start ページを見つけたのですが、
Have a nice coffee while everything is downloading and starting up
こんなこと書いてあるわりにはつまずく部分があったので、手順を残しておきます。
検証環境
- MacBook Pro (M1)
- macOS Ventura 13.6.4
- opensearchproject/opensearch:2.12.0
- Rancher Desktop Version: 1.7.0 --- dockerd(moby)
- Docker Compose version v2.14.0
実行方法
適当なディレクトリに公式サンプルの docker-compose.yml を置きます。
$ ls -la total 8 drwxr-xr-x 3 hoge staff 96 3 7 16:40 . drwxr-xr-x 7 hoge staff 224 3 6 18:14 .. -rw-r--r-- 1 hoge staff 2304 3 7 16:36 docker-compose.yml
環境変数にパスワードを設定します。後ほどブラウザ接続してログインするのに使います。 デモのため超適当なパスワードを指定しています。
$ export OPENSEARCH_INITIAL_ADMIN_PASSWORD=90@A1qwe#Pa_q
lima の シェルで vm.max_map_count に推奨値(下限) 262144 を設定します。
$ rdctl shell lima-rancher-desktop:/Users/hoge/opensearch$ sysctl -a | grep 'vm.max_map_count' vm.max_map_count = 65530 lima-rancher-desktop:/Users/hoge/opensearch$ sudo sysctl -w vm.max_map_count=262144 vm.max_map_count = 262144 lima-rancher-desktop:/Users/hoge/opensearch$ sysctl -a | grep 'vm.max_map_count' vm.max_map_count = 262144 lima-rancher-desktop:/Users/hoge/opensearch$ exit
コンテナを起動します。
$ docker-compose up -d $ docker-compose ps NAME COMMAND SERVICE STATUS PORTS opensearch-dashboards "./opensearch-dashbo…" opensearch-dashboards running 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp opensearch-node1 "./opensearch-docker…" opensearch-node1 running 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp, 0.0.0.0:9600->9600/tcp, :::9600->9600/tcp, 9650/tcp opensearch-node2 "./opensearch-docker…" opensearch-node2 running 9200/tcp, 9300/tcp, 9600/tcp, 9650/tcp
ブラウザで http://localhost:5601/
を開くとログイン画面になります。
ユーザー admin
と 先ほど 環境変数 OPENSEARCH_INITIAL_ADMIN_PASSWORD に設定したパスワード
でログインできます。
はまりどころ3つ
ここではまりどころを3つご紹介します。いずれのパターンも以下の挙動です。対処法はコンテナのログで分かるようになっています。
- ブラウザでアクセスすると
OpenSearch Dashboards server is not ready yet
が表示される - コンテナ
opensearch-node1
opensearch-node2
の起動が失敗する
その1: 環境変数を設定せずにコンテナ起動した
$ docker-compose up -d $ docker-compose ps WARN[0000] The "OPENSEARCH_INITIAL_ADMIN_PASSWORD" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENSEARCH_INITIAL_ADMIN_PASSWORD" variable is not set. Defaulting to a blank string. NAME COMMAND SERVICE STATUS PORTS opensearch-dashboards "./opensearch-dashbo…" opensearch-dashboards running 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp opensearch-node1 "./opensearch-docker…" opensearch-node1 exited (1) opensearch-node2 "./opensearch-docker…" opensearch-node2 exited (1)
$ docker logs opensearch-node1 No custom admin password found. Please provide a password via the environment variable OPENSEARCH_INITIAL_ADMIN_PASSWORD.
その2: 環境変数のパスワード強度が弱い
$ export OPENSEARCH_INITIAL_ADMIN_PASSWORD=hoge $ docker-compose up -d $ docker-compose ps NAME COMMAND SERVICE STATUS PORTS opensearch-dashboards "./opensearch-dashbo…" opensearch-dashboards running 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp opensearch-node1 "./opensearch-docker…" opensearch-node1 exited (1) opensearch-node2 "./opensearch-docker…" opensearch-node2 exited (1)
$ docker logs opensearch-node1 Password hoge is weak. Please re-try with a stronger password.
その3: vm.max_map_count の値が小さい
$ docker-compose ps NAME COMMAND SERVICE STATUS PORTS opensearch-dashboards "./opensearch-dashbo…" opensearch-dashboards running 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp opensearch-node1 "./opensearch-docker…" opensearch-node1 exited (78) opensearch-node2 "./opensearch-docker…" opensearch-node2 exited (78)
$ docker logs opensearch-node1 ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
おわりに
お金の心配をせずに試せるのはうれしいですね!